package p100;

import java.util.ArrayList;
import java.util.List;

public class Leetcode_199 {
    /**
     * Definition for a binary tree node.
     */
    public class TreeNode {
        int val;
        TreeNode left;
        TreeNode right;

        TreeNode(int x) {
            val = x;
        }
    }

    List<Integer> res = new ArrayList<>();

    public List<Integer> rightSideView(TreeNode root) {
        dfs(root, 0);
        return res;
    }

    private void dfs(TreeNode root, int i) {
        if (root == null) {
            return;
        }
        // 如果当前节点所在深度还没有出现在res里，说明在该深度下当前节点是第一个被访问的节点，因此将当前节点加入res中。
        if (i == res.size()) {
            res.add(root.val);
        }
        i++;
        dfs(root.right, i);
        dfs(root.left, i);
    }

    public static void main(String[] args) {
        Leetcode_199 l = new Leetcode_199();
    }
}
